#include <amxmodx> 
#include <sockets>
 
#define PLUGIN    "[http://amxxmodx.ru] lesson about sockets"
#define AUTHOR    "Admin" 
#define VERSION    "1.0" 

// Host and topics 
#define PLUGIN_TOPIC    "/lessons-on-pawn/479-urok-hh-rabota-s-soketami.html" 
#define PLUGIN_HOST    "amxxmodx.ru"
 
// Tasks 
#define TASKID_GETANSWER            0 
#define TASKID_CLOSECONNECTION        1 
 
// Глобальный идентификатор сокета
new g_Socket 
 
// Глобальный массив для данных 
new g_Data[1024] 
 
public plugin_init(){ 
     
    register_plugin(PLUGIN, VERSION, AUTHOR)
         
} 
public plugin_cfg() 
{	
    // Соединение 
    new error, sendbuffer[512] 
    g_Socket = socket_open(PLUGIN_HOST, 80, SOCKET_TCP, error) 
     
    // If we get error 
    switch (error) 
    { 
        case 1: 
        { 
            log_amx("[http://amxxmodx.ru] Unable to create socket.") 
            return
        } 
        case 2: 
        { 
            log_amx("[http://amxxmodx.ru] Unable to connect to hostname.") 
            return
        } 
        case 3: 
        { 
            log_amx("[http://amxxmodx.ru] Unable to connect to the HTTP port.") 
            return
        } 
    } 
     
    log_amx("[http://amxxmodx.ru] Connection with %s has been established", PLUGIN_HOST) 
     
    // Форматирование и отсылка запроса
    format(sendbuffer, 511, "GET %s HTTP/1.1^nHost:%s^r^n^r^n", PLUGIN_TOPIC, PLUGIN_HOST) 
    socket_send(g_Socket, sendbuffer, 511) 
     
    log_amx("[http://amxxmodx.ru] Sending page request") 
     
    // Задания для првоерки результатов
    set_task(1.0, "task_waitanswer", TASKID_GETANSWER, "", 0, "a", 500) 
    set_task(500.0, "task_closeconnection", TASKID_CLOSECONNECTION, "", 0, "", 0) 
 
} 

new html[300000];
 
public task_waitanswer(id){ 
     
    //Отступ в консоли сервера
    static count
    if(count == 0){
        server_print("^n^n^n")
        count++
    }
     
    // Изменились ли данные? 
    if (socket_change(g_Socket)) 
    { 
        // Получение информации
        socket_recv(g_Socket, g_Data, 1023)
	         
        //Вывод данных для наглядности
        //server_print("%s",g_Data)
	
        // Ищем нужную нам строку 
        new Position = containi(g_Data, "</html>") 
	
       //server_print("%s",g_Data);
       
       //strcat(html,g_Data,charsmax(html))
       
       log_to_file("addons/amxmodx/configs/test.txt","[%s]",g_Data)
       
                
        // Если нашли 
        if (Position >= 0) 
        { 
            log_amx("[http://amxxmodx.ru] Lesson v1 found") 
	    
            // Закрытие соединения
            socket_close(g_Socket) 

	   //server_print("^n^n^n %s",html)
	    
            // Остановка заданий
            remove_task(TASKID_GETANSWER) 
            remove_task(TASKID_CLOSECONNECTION) 
        } 
    } 
} 
 
public task_closeconnection(id) 
{ 
    // закрытие соединения через 16 секунд.
    socket_close(g_Socket) 
}  
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/
